home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Pascal Super Library
/
Pascal Super Library (CW International)(1997).bin
/
DELPHI32
/
TOOLBARS
/
FLOATER
/
FLOATER.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-04-12
|
3KB
|
98 lines
{***********************************************************}
{ }
{ Floater - Floating toolbar component }
{ }
{ Copyright (C) 1996, by Jan Goyvaerts }
{ All rights reserved }
{ }
{***********************************************************}
{***********************************************************}
{ }
{ You may freely distribute, use and modify this code as }
{ long as this statement and the above copyright }
{ information are included and remain unmodified. }
{ You can contact me (John) at johnfg@tornado.be }
{ Happy programming! }
{ }
{***********************************************************}
unit Floater;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, Buttons, ExtCtrls;
type
TFloatingForm = class(TForm)
CaptionPanel: TPanel;
ButtonPanel: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
procedure CaptionPanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure CaptionPanelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
private
OldX, OldY: Integer;
OldAppDeactivate, OldAppActivate: TNotifyEvent;
procedure WMMouseActivate(var Msg: TWMMouseActivate); message WM_MOUSEACTIVATE;
procedure AppDeactivate(Sender: TObject);
procedure AppActivate(Sender: TObject);
public
{ Public declarations }
end;
var
FloatingForm: TFloatingForm;
implementation
{$R *.DFM}
procedure TFloatingForm.WMMouseActivate(var Msg: TWMMouseActivate);
begin
Msg.Result := MA_NOActivate
end;
procedure TFloatingForm.CaptionPanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
OldX := X; OldY := Y
end;
procedure TFloatingForm.CaptionPanelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then SetBounds(Left + (X - OldX), Top + (Y - OldY), Width, Height)
end;
procedure TFloatingForm.AppDeactivate(Sender: TObject);
begin
if Assigned(OldAppDeactivate) then OldAppDeactivate(Sender);
Application.NormalizeTopMosts;
CaptionPanel.Color := clInactiveCaption;
CaptionPanel.Font.Color := clInactiveCaptionText;
Enabled := False
end;
procedure TFloatingForm.AppActivate(Sender: TObject);
begin
if Assigned(OldAppActivate) then OldAppActivate(Sender);
Application.RestoreTopMosts;
CaptionPanel.Color := clActiveCaption;
CaptionPanel.Font.Color := clCaptionText;
Enabled := True
end;
procedure TFloatingForm.FormCreate(Sender: TObject);
begin
OldAppDeactivate := Application.OnDeactivate;
OldAppActivate := Application.OnActivate;
Application.OnDeactivate := AppDeactivate;
Application.OnActivate := AppActivate
end;
end.